#include "cJSON/cJSON.h"
#include "log/log.h"
#include "stdlib.h"

int main()
{
    // 定义name和age
    char *name = "Tom";
    int age = 18;

    // 1.创建一个cJSON对象{"name" : "Tom", "age" : 18}
    // 创建一个空的cJSON对象
    cJSON *obj = cJSON_CreateObject();
    // 非空判断
    if (obj == NULL)
    {
        return -1;
    }
    // 向cJSON对象中添加name属性
    cJSON_AddStringToObject(obj, "name", name);
    // 向cJSON对象中添加age属性
    cJSON_AddNumberToObject(obj, "age", age);
    // 将cJSON对象转换为未格式化的cJSON数据
    char *json = cJSON_PrintUnformatted(obj);
    // 打印cJSON数据
    log_debug("json: %s", json);

    // 2.解析cJSON数据
    cJSON *get_obj = cJSON_Parse(json);
    // 获取get_obj的name属性
    cJSON *obj_name = cJSON_GetObjectItem(get_obj, "name");
    // 获取get_obj的age属性
    cJSON *obj_age = cJSON_GetObjectItem(get_obj, "age");
    // 判断是否成功接收到name或age属性
    if (obj_age == NULL || obj_name == NULL)
    {
        log_debug("get_obj中的name或age属性不存在！");
        return -1;
    }
    // 获取name属性的值
    char *get_name = obj_name->valuestring;
    // 获取age属性的值
    int get_age = obj_age->valueint;
    // 打印name和age的值
    log_debug("name: %s, age: %d", get_name, get_age);

    // 3.释放cJSON对象
    cJSON_Delete(obj);
    cJSON_Delete(get_obj);
    free(json);
    
}
